/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package za.ac.cput.ruan.designpatterns.behavioral.observer;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 *
 * @author Ruan
 */
public class WeatherStation implements WeatherSubject{
    
    Set<WeatherObserver> weatherObservers;
    int temp;
    
    public WeatherStation(int temp){
        weatherObservers = new HashSet<WeatherObserver>();
        this.temp = temp;
    }

    @Override
    public void addObserver(WeatherObserver weatherObserver) {
        weatherObservers.add(weatherObserver);
    }

    @Override
    public void removeObserver(WeatherObserver weatherObserver) {
        weatherObservers.remove(weatherObserver);
    }

    @Override
    public void doNotify() {
        Iterator<WeatherObserver> it = weatherObservers.iterator();
        while(it.hasNext()){
            WeatherObserver  weatherObserver = it.next();
            weatherObserver.doUpdate(temp);
        }
    }
    
    public void setTemperature(int newTemperature){
        System.out.println("\n Weather station setting temperature to " + newTemperature);
        temp = newTemperature;
        doNotify();
    }
}
